package com.alageek.study.controller;

import com.alageek.study.entity.Chat;
import com.alageek.study.entity.Message;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.messaging.simp.SimpMessagingTemplate;
import org.springframework.stereotype.Controller;

import java.security.Principal;

@Controller
public class GreetingController {

    @Autowired
    SimpMessagingTemplate messagingTemplate;

    /**
     * 群聊，接受/app/hello消息，发送消息给/topic/grettings，进而转发给broker广播
     * @param message 接受的消息
     * @return 转发消息给broker
     */
    @MessageMapping("/hello")
    @SendTo("/topic/greetings")
    public Message greeting(Message message){
        return message;
    }

    ///**
    // * 功能同上，使用SimpMessagingTemplate，开发者可以在任意地方发送消息到broker，也可以发送消息给某一个用户
    // * @param message 接受的消息
    // */
    //@MessageMapping("/hello")
    //public void greeting(Message message){
    //    messagingTemplate.convertAndSend("/topic/greetings", message);
    //}

    @MessageMapping("/chat")
    public void chat(Principal principal, Chat chat){
        String from = principal.getName();
        chat.setFrom(from);
        messagingTemplate.convertAndSendToUser(chat.getTo(), "/queue/chat", chat);
    }

}
